package slcu.solicitudaltaalumno;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.mail.internet.InternetAddress;

import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;

import slcu.model.SolicitudAltaAlumnoMailDestino;
import slcu.service.SolicitudAltaAlumnoMailDestinoLocalServiceUtil;
import slcu.solicitudaltaalumno.receptores.ReceptorPorBaseDeDatos;
import slcu.solicitudaltaalumno.receptores.ReceptorPorMail;
import slcu.solicitudaltaalumno.receptores.ReceptorType;

public class ConfiguracionAltaAlumno {
	
	private static Log _log = LogFactoryUtil.getLog(ConfiguracionAltaAlumno.class);
	
	public static List<ReceptorType> obtenerReceptores() {
		
		List<ReceptorType> receptores = new ArrayList<ReceptorType>();

		receptores.add(obtenerReceptorPorMail());
		receptores.add(new ReceptorPorBaseDeDatos());
		
		return receptores;
		
	}
	
	private static ReceptorPorMail obtenerReceptorPorMail() {
		List<SolicitudAltaAlumnoMailDestino> mailSolicitudDestinos = null;
		
		try {
			mailSolicitudDestinos = SolicitudAltaAlumnoMailDestinoLocalServiceUtil.getSolicitudAltaAlumnoMailDestinos(0, 1000);
		} catch (SystemException e) {
			_log.error("Error al intentar obtener la lista de SolicitudAltaAlumnoMailDestino", e);
		}
		
		if (mailSolicitudDestinos == null) {
			_log.warn("No se encontraron mail de destinos para la solicitud de Alta de Alumno");
			return new ReceptorPorMail(new ArrayList<InternetAddress>());
		}
		
		List<InternetAddress> direcciones = new ArrayList<InternetAddress>();
		for (SolicitudAltaAlumnoMailDestino mailDestino: mailSolicitudDestinos) {
			try {
				direcciones.add(new InternetAddress(mailDestino.getMail(), mailDestino.getNombre()));
			} catch (UnsupportedEncodingException e) {
				_log.error(String.format("Error al parsear la direccion: '%s'", mailDestino.getMail()));
			}
		}
		
		return new ReceptorPorMail(direcciones);
	}
	

}
